home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / comp0_89.lha / Feel / Boot / CBoot / semaphores.em < prev    next >
Text File  |  1993-06-30  |  1KB  |  62 lines

  1. ;; Eulisp Module
  2. ;; Author: pab
  3. ;; File: sems.em
  4. ;; Date: Tue May  5 23:23:43 1992
  5. ;;
  6. ;; Project:
  7. ;; Description: 
  8. ;;
  9.  
  10. (defmodule semaphores
  11.   (extras0
  12.    macros0
  13.    defs
  14.    init
  15.    sems
  16.    telos1
  17.    threads
  18.    
  19.    )
  20.   ()
  21.   (expose threads)
  22.  
  23.   (defstruct <lock> ()
  24.     ((real-sem initform (make-primitive-semaphore)
  25.            reader semaphore-real-sem))
  26.     constructor make-lock
  27.     predicate semaphore-p)
  28.   
  29.            
  30.   (defgeneric lock (sem))
  31.   (defgeneric unlock (sem))
  32.   (defgeneric initialize-lock (sem))
  33.     
  34.   (defmethod lock ((x <object>))
  35.     (error "Wrong class for lock" Internal-Error))
  36.   
  37.   (defmethod lock ((x <lock>))
  38.     (open-primitive-semaphore (semaphore-real-sem x))
  39.     x)
  40.  
  41.   (defmethod unlock ((x <object>))
  42.     (error "Wrong class for unlock" Internal-Error))
  43.   
  44.   (defmethod unlock ((x <lock>))
  45.     (close-primitive-semaphore (semaphore-real-sem x))
  46.     x)
  47.  
  48.   (defmethod initialize-lock ((x <object>))
  49.     (error "Wrong class for initialize-semaphore" Internal-Error))
  50.   
  51.   (defmethod initialize-lock ((x <lock>))
  52.     (initialize-primitive-semaphore (semaphore-real-sem x))
  53.     x)
  54.  
  55.   (export make-lock lock unlock <lock> semaphore-p initialize-lock)
  56.  
  57.   ;; end module
  58.   )
  59.  
  60.  
  61.  
  62.